export const normalizeMenuList = (list, cb = () => null) => {
  // 创建一个 Map 对象，用于存储菜单项
  const menuMap = new Map(list.map(menu => [menu.id, menu]))
  const result = []
  list.forEach(menu => {
    // 执行回调函数
    cb(menu)

    // 如果菜单项的 parentId 为 -1，则将其添加到 result 数组中
    if (menu.parentId === "-1") {
      return result.push(menu)
    }

    // 获取当前菜单项的父级菜单项
    const parent = menuMap.get(menu.parentId)
    // 如果父级菜单项存在，则将当前菜单项添加到父级菜单项的 children 数组中
    parent && parent.children.push(menu)
  })
  // 对 result 数组进行排序
  sortMenuList(result)
  return result
}

// 对菜单项进行排序
function sortMenuList(list) {
  list.sort((a, b) => a.sort - b.sort)
  list.forEach(item => {
    // 如果当前菜单项存在子菜单项，则对其进行排序
    if (Array.isArray(item.children) && item.children.length > 1) {
      sortMenuList(item.children)
    }
  })
}

